const path = require('path');
const express = require('express');
let app=express();
app.listen(3000)





app.get("/index",(req,res,next)=>{

    // 接收账号和密码
    let {username,password}=req.query

    // 假设正确的账号和密码是：zs 123
    if(username!="zs" || password!=123){

        console.log("出错了，属于逻辑错误，应该走统一处理");
        // next()// 请走向下一个匹配到的路由


        //*****************************
        // next("错误信息参数")// 有参数的next,走向的是下一个匹配到的，有4个参数（err,req,res,next）的路由

        next("账号或密码错误")

        //*****************************

        return
    }

    res.send("index")
})

app.use((req,res)=>{
    
   res.send({
        status:404,
        message:"您访问的页面不存在，程序员正在开发中~~"
   })
})




// 我们需要通过另外一个中间件去拦截非404的错误


//*****************************
// 逻辑错误处理中间件：必须有4个参数（当有4个参数时，系统会认为这个就是逻辑错误处理）
// 这里的这个中间件，和404中间件都是可以匹配到所有路由的，所以？如何跳过404，走到逻辑错误处理呢：
// 1、手动调用 next(参数)
// 2、真实的出现了报错
app.use((err,req,res,next)=>{

    //接收错误参数
    console.log(err);

    // 返回页面
    // res.send(`<h1>${err?err:"服务器崩溃了~~"}</h1>`)

    // 返回json数据
    res.send({
        status:500,
        msg:err?err:"服务器崩溃了~~"
    })
})
//*****************************